package com.rayboo.example.random;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * 生成唯一的订单号
 */
public class GenOrderNo {

    /**
     * 生成订单号
     *
     * @return 订单号
     */
    public static String genOrderNo() {
        String orderNo;
        String randomNo = String.valueOf((Math.random() * 9 + 1) * 1000000);
        String sdf = new SimpleDateFormat("yyyyMMddHHMMSS").format(new Date());
        orderNo = randomNo.substring(0, 4);
        orderNo = sdf + orderNo;
        return orderNo;
    }

    /**
     * 生成11位随机数字
     *
     * @return 订单号
     */
    public static String genOrderId() {
        int machineId = 1;//最大支持1-9个集群机器部署  
        int hashCodeV = UUID.randomUUID().toString().hashCode();
        if (hashCodeV < 0) {//有可能是负数
            hashCodeV = -hashCodeV;
        }
        // 0 代表前面补充0、 4 代表长度为4、 d代表参数为正数型
        return machineId + String.format("%08d", hashCodeV);
    }

    public static void main(String[] args) {
        System.out.println("orderNo: " + genOrderNo());

        System.out.println("orderId: " + genOrderId());
    }
}
